﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Lab6_Product
{
    
    
    public partial class frmViewAllProducts : Form
    {




       
        public int id;
        public DataView dv;

        #region Singleton
        // Chỉ cho mở 1 frmViewAllProducts 
        //ở đây ta sử dụng một phương thức tĩnh để kiểm soát instance của Form khi khởi tạo
        public static frmViewAllProducts instance;
        //Tạo thuộc tính tĩnh để nhận về instance của Form2, nếu thông thường khi ko sử dụng cách này, mỗi lần bạn gọi Form2 f=new Form2(); thì sẽ có 1 instance mới của Form2 được sinh ra
        public static frmViewAllProducts Instance
        {
            get
            {
                //Đảm bảo luôn chỉ có duy nhất 1 instance của Form2 được khởi tạo
                if (instance == null || instance.IsDisposed)
                {
                    instance = new frmViewAllProducts();
                }
                return instance;
            }
        }
        // hết.
        #endregion

        public frmViewAllProducts()
        {
            InitializeComponent();
           
          
        }

        
        
        public void frmViewAllProducts_Load(object sender, EventArgs e)
        {
            LoadData();
           // splitContainer1.Panel1.Controls.Clear();
            
        }

        #region Singleton
        static frmViewAllProducts me = null;
        static public frmViewAllProducts GetObj()
        {
            if (me == null)
            {
                me = new frmViewAllProducts();
            }
            return me;
        }
        #endregion

        public void LoadData()
        {
            dataGridView1.AutoGenerateColumns = false;
            DataProccess db = new DataProccess();
            DataTable dt = db.GetAllProduct();
            dv = new DataView(dt);
            //dataGridView1.Controls.Clear();
            dataGridView1.DataSource = dv;
            dataGridView1.Refresh();
             //.ToTable(true, "_id", "ProductName", "PriceSell", "Quantity");
        }

        public void loadForm()
        {
            frmViewAllProducts_Load(sender, e);
        }
        

        

        private void btnNew_Click(object sender, EventArgs e)
        {
            NewButton();
        }

        private void NewButton()
        {
            frmAddNewProduct fANP = new frmAddNewProduct();
            fANP.TopLevel = false;
            splitContainer1.Panel2.Controls.Clear();
            splitContainer1.Panel2.Controls.Add(fANP);
            fANP.Show();
        
        }

        private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NewButton();
        }

        private void btnAddNew_Click(object sender, EventArgs e)
        {
            NewButton();
        }

        public void enableFunction()
        { 
            // wew , run out of time
        }




        

        

        private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e)
        {
            
        }

        private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
        }

        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            id = e.RowIndex + 1;
            frmEditProduct fEP = new frmEditProduct();
            fEP.LoadForm(id);
            fEP.TopLevel = false;
            splitContainer1.Panel2.Controls.Clear();
            splitContainer1.Panel2.Controls.Add(fEP);
            fEP.Show();
            dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.FromArgb(51, 153, 255); //Color.DodgerBlue
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            string nameS= txtSearch.Text;
            dv.RowFilter = "Productname like '%"+ nameS+ "%'" ;
        }














        public object sender { get; set; }

        public EventArgs e { get; set; }
    }
}
